Open
Bug 516039
Opened 16 years ago
Updated 3 years ago
Assertions in nsIFrame::GetUsedPadding() & nsIFrame::GetUsedBorder()
Categories
(Core :: Layout, defect)
Tracking
()
NEW
People
(Reporter: johnjbarton, Unassigned)
References
Details
FF 3.7 debug build from source pulled 10SEP09, with patches Asserts:
###!!! ASSERTION: cannot call GetUsedPadding on a dirty frame not currently bein
g reflowed: 'nsLayoutUtils::sDisableGetUsedXAssertions || !NS_SUBTREE_DIRTY(this
) || (GetStateBits() & NS_FRAME_IN_REFLOW)', file g:/mozilla/mozilla-central/src
/layout/generic/nsFrame.cpp, line 619
Stack
ntdll.dll!_DbgBreakPoint@0()
> xpcom_core.dll!Break(const char *) Line 489 C++
xpcom_core.dll!NS_DebugBreak_P(unsigned int, const char *, const char *, const char *, int) Line 354 C++
gklayout.dll!nsIFrame::GetUsedPadding() Line 619 C++
gklayout.dll!nsIFrame::GetUsedBorderAndPadding() Line 815 C++
gklayout.dll!nsLayoutUtils::GetFirstLinePosition(const nsIFrame *, nsLayoutUtils::LinePosition *) Line 2571 C++
gklayout.dll!nsLayoutUtils::GetFirstLinePosition(const nsIFrame *, nsLayoutUtils::LinePosition *) Line 2587 C++
gklayout.dll!nsLayoutUtils::GetFirstLineBaseline(const nsIFrame *, int *) Line 2536 C++
gklayout.dll!nsTableCellFrame::GetCellBaseline() Line 678 C++
gklayout.dll!nsTableRowFrame::ReflowChildren(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, nsTableFrame &, unsigned int &) Line 959 C++
gklayout.dll!nsTableRowFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 1071 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsTableRowGroupFrame::ReflowChildren(nsPresContext *, nsHTMLReflowMetrics &, nsRowGroupReflowState &, unsigned int &, int *) Line 427 C++
gklayout.dll!nsTableRowGroupFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 1331 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsTableFrame::ReflowChildren(nsTableReflowState &, unsigned int &, nsIFrame * &, nsRect &) Line 2860 C++
gklayout.dll!nsTableFrame::ReflowTable(nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, nsIFrame * &, unsigned int &) Line 1912 C++
gklayout.dll!nsTableFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 1817 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsTableOuterFrame::OuterDoReflowChild(nsPresContext *, nsIFrame *, const nsHTMLReflowState &, nsHTMLReflowMetrics &, unsigned int &) Line 1009 C++
gklayout.dll!nsTableOuterFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 1150 C++
gklayout.dll!nsBlockReflowContext::ReflowBlock(const nsRect &, int, nsCollapsingMargin &, int, int, nsLineBox *, nsHTMLReflowState &, unsigned int &, nsBlockReflowState &) Line 310 C++
gklayout.dll!nsBlockFrame::ReflowBlockFrame(nsBlockReflowState &, nsLineList_iterator, int *) Line 3072 C++
gklayout.dll!nsBlockFrame::ReflowLine(nsBlockReflowState &, nsLineList_iterator, int *) Line 2348 C++
gklayout.dll!nsBlockFrame::ReflowDirtyLines(nsBlockReflowState &) Line 1874 C++
gklayout.dll!nsBlockFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 983 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsHTMLScrollFrame::ReflowScrolledFrame(ScrollReflowState *, int, int, nsHTMLReflowMetrics *, int) Line 543 C++
gklayout.dll!nsHTMLScrollFrame::ReflowContents(ScrollReflowState *, const nsHTMLReflowMetrics &) Line 637 C++
gklayout.dll!nsHTMLScrollFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 838 C++
gklayout.dll!nsAbsoluteContainingBlock::ReflowAbsoluteFrame(nsIFrame *, nsPresContext *, const nsHTMLReflowState &, int, int, int, nsIFrame *, unsigned int &, nsRect *) Line 468 C++
gklayout.dll!nsAbsoluteContainingBlock::Reflow(nsContainerFrame *, nsPresContext *, const nsHTMLReflowState &, unsigned int &, int, int, int, int, int, nsRect *) Line 158 C++
gklayout.dll!CanvasFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 731 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsHTMLScrollFrame::ReflowScrolledFrame(ScrollReflowState *, int, int, nsHTMLReflowMetrics *, int) Line 543 C++
gklayout.dll!nsHTMLScrollFrame::ReflowContents(ScrollReflowState *, const nsHTMLReflowMetrics &) Line 637 C++
gklayout.dll!nsHTMLScrollFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 838 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!ViewportFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 282 C++
gklayout.dll!PresShell::DoReflow(nsIFrame *, int) Line 7085 C++
gklayout.dll!PresShell::ProcessReflowCommands(int) Line 7205 C++
gklayout.dll!PresShell::FlushPendingNotifications(mozFlushType) Line 4762 C++
gklayout.dll!PresShell::WillPaint() Line 6718 C++
gklayout.dll!nsViewManager::FlushPendingInvalidates() Line 2028 C++
gklayout.dll!nsViewManager::EnableRefresh(unsigned int) Line 1754 C++
gklayout.dll!nsViewManager::EndUpdateViewBatch(unsigned int) Line 1794 C++
gklayout.dll!nsIViewManager::UpdateViewBatch::EndUpdateViewBatch(unsigned int) Line 390 C++
gklayout.dll!nsViewManager::DispatchEvent(nsGUIEvent *, nsIView *, nsEventStatus *) Line 968 C++
gklayout.dll!HandleEvent(nsGUIEvent *) Line 168 C++
gkwidget.dll!nsWindow::DispatchEvent(nsGUIEvent *, nsEventStatus &) Line 2763 C++
gkwidget.dll!nsWindow::DispatchWindowEvent(nsGUIEvent *, nsEventStatus &) Line 2792 C++
gkwidget.dll!nsWindow::OnPaint(HDC__ *) Line 509 C++
gkwidget.dll!nsWindow::ProcessMessage(unsigned int, unsigned int &, long &, long *) Line 3669 C++
gkwidget.dll!nsWindow::WindowProc(HWND__ *, unsigned int, unsigned int, long) Line 3374 C++
user32.dll!_InternalCallWinProc@20()
user32.dll!_UserCallWinProcCheckWow@32()
user32.dll!_DispatchClientMessage@20()
user32.dll!___fnDWORD@4()
ntdll.dll!_KiUserCallbackDispatcher@12()
user32.dll!_NtUserCallHwndLock@8()
gkwidget.dll!nsWindow::DispatchStarvedPaints(HWND__ *, long) Line 2895 C++
user32.dll!_InternalEnumWindows@24()
user32.dll!_EnumChildWindows@12()
gkwidget.dll!nsWindow::DispatchPendingEvents() Line 2935 C++
gkwidget.dll!nsWindow::ProcessMessage(unsigned int, unsigned int &, long &, long *) Line 3780 C++
gkwidget.dll!nsWindow::WindowProc(HWND__ *, unsigned int, unsigned int, long) Line 3374 C++
user32.dll!_InternalCallWinProc@20()
user32.dll!_UserCallWinProcCheckWow@32()
user32.dll!_DispatchMessageWorker@8()
user32.dll!_DispatchMessageW@4()
gkwidget.dll!nsAppShell::ProcessNextNativeEvent(int) Line 166 C++
gkwidget.dll!nsBaseAppShell::DoProcessNextNativeEvent(int) Line 151 C++
gkwidget.dll!nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal *, int, unsigned int) Line 278 C++
xpcom_core.dll!nsThread::ProcessNextEvent(int, int *) Line 510 C++
xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread *, int) Line 230 C++
gkwidget.dll!nsBaseAppShell::Run() Line 170 C++
tkitcmps.dll!nsAppStartup::Run() Line 182 C++
xul.dll!XRE_main(int, char * *, const nsXREAppData *) Line 3479 C++
firefox.exe!NS_internal_main(int, char * *) Line 156 C++
firefox.exe!wmain(int, unsigned short * *) Line 110 C++
firefox.exe!__tmainCRTStartup() Line 583 C
firefox.exe!wmainCRTStartup() Line 403 C
kernel32.dll!_BaseProcessStart@4()
Reporter | ||
Comment 1•16 years ago
|
||
That assert alternates with this one:
###!!! ASSERTION: cannot call GetUsedBorder on a dirty frame not currently being
reflowed: 'nsLayoutUtils::sDisableGetUsedXAssertions || !NS_SUBTREE_DIRTY(this)
|| (GetStateBits() & NS_FRAME_IN_REFLOW)', file g:/mozilla/mozilla-central/src/
layout/generic/nsFrame.cpp, line 591
ntdll.dll!_DbgBreakPoint@0()
> xpcom_core.dll!Break(const char *) Line 489 C++
xpcom_core.dll!NS_DebugBreak_P(unsigned int, const char *, const char *, const char *, int) Line 354 C++
gklayout.dll!nsIFrame::GetUsedBorder() Line 591 C++
gklayout.dll!nsIFrame::GetUsedBorderAndPadding() Line 815 C++
gklayout.dll!nsLayoutUtils::GetFirstLinePosition(const nsIFrame *, nsLayoutUtils::LinePosition *) Line 2571 C++
gklayout.dll!nsLayoutUtils::GetFirstLinePosition(const nsIFrame *, nsLayoutUtils::LinePosition *) Line 2587 C++
gklayout.dll!nsLayoutUtils::GetFirstLineBaseline(const nsIFrame *, int *) Line 2536 C++
gklayout.dll!nsTableCellFrame::GetCellBaseline() Line 678 C++
gklayout.dll!nsTableRowFrame::CalcHeight(const nsHTMLReflowState &) Line 561 C++
gklayout.dll!nsTableRowFrame::ReflowChildren(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, nsTableFrame &, unsigned int &) Line 1009 C++
gklayout.dll!nsTableRowFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 1071 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsTableRowGroupFrame::ReflowChildren(nsPresContext *, nsHTMLReflowMetrics &, nsRowGroupReflowState &, unsigned int &, int *) Line 427 C++
gklayout.dll!nsTableRowGroupFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 1331 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsTableFrame::ReflowChildren(nsTableReflowState &, unsigned int &, nsIFrame * &, nsRect &) Line 2860 C++
gklayout.dll!nsTableFrame::ReflowTable(nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, nsIFrame * &, unsigned int &) Line 1912 C++
gklayout.dll!nsTableFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 1817 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsTableOuterFrame::OuterDoReflowChild(nsPresContext *, nsIFrame *, const nsHTMLReflowState &, nsHTMLReflowMetrics &, unsigned int &) Line 1009 C++
gklayout.dll!nsTableOuterFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 1150 C++
gklayout.dll!nsBlockReflowContext::ReflowBlock(const nsRect &, int, nsCollapsingMargin &, int, int, nsLineBox *, nsHTMLReflowState &, unsigned int &, nsBlockReflowState &) Line 310 C++
gklayout.dll!nsBlockFrame::ReflowBlockFrame(nsBlockReflowState &, nsLineList_iterator, int *) Line 3072 C++
gklayout.dll!nsBlockFrame::ReflowLine(nsBlockReflowState &, nsLineList_iterator, int *) Line 2348 C++
gklayout.dll!nsBlockFrame::ReflowDirtyLines(nsBlockReflowState &) Line 1874 C++
gklayout.dll!nsBlockFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 983 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsHTMLScrollFrame::ReflowScrolledFrame(ScrollReflowState *, int, int, nsHTMLReflowMetrics *, int) Line 543 C++
gklayout.dll!nsHTMLScrollFrame::ReflowContents(ScrollReflowState *, const nsHTMLReflowMetrics &) Line 637 C++
gklayout.dll!nsHTMLScrollFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 838 C++
gklayout.dll!nsAbsoluteContainingBlock::ReflowAbsoluteFrame(nsIFrame *, nsPresContext *, const nsHTMLReflowState &, int, int, int, nsIFrame *, unsigned int &, nsRect *) Line 468 C++
gklayout.dll!nsAbsoluteContainingBlock::Reflow(nsContainerFrame *, nsPresContext *, const nsHTMLReflowState &, unsigned int &, int, int, int, int, int, nsRect *) Line 158 C++
gklayout.dll!CanvasFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 731 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!nsHTMLScrollFrame::ReflowScrolledFrame(ScrollReflowState *, int, int, nsHTMLReflowMetrics *, int) Line 543 C++
gklayout.dll!nsHTMLScrollFrame::ReflowContents(ScrollReflowState *, const nsHTMLReflowMetrics &) Line 637 C++
gklayout.dll!nsHTMLScrollFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 838 C++
gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame *, nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, int, int, unsigned int, unsigned int &, nsOverflowContinuationTracker *) Line 791 C++
gklayout.dll!ViewportFrame::Reflow(nsPresContext *, nsHTMLReflowMetrics &, const nsHTMLReflowState &, unsigned int &) Line 282 C++
gklayout.dll!PresShell::DoReflow(nsIFrame *, int) Line 7085 C++
gklayout.dll!PresShell::ProcessReflowCommands(int) Line 7205 C++
gklayout.dll!PresShell::FlushPendingNotifications(mozFlushType) Line 4762 C++
gklayout.dll!PresShell::WillPaint() Line 6718 C++
gklayout.dll!nsViewManager::FlushPendingInvalidates() Line 2028 C++
gklayout.dll!nsViewManager::EnableRefresh(unsigned int) Line 1754 C++
gklayout.dll!nsViewManager::EndUpdateViewBatch(unsigned int) Line 1794 C++
gklayout.dll!nsIViewManager::UpdateViewBatch::EndUpdateViewBatch(unsigned int) Line 390 C++
gklayout.dll!nsViewManager::DispatchEvent(nsGUIEvent *, nsIView *, nsEventStatus *) Line 968 C++
gklayout.dll!HandleEvent(nsGUIEvent *) Line 168 C++
gkwidget.dll!nsWindow::DispatchEvent(nsGUIEvent *, nsEventStatus &) Line 2763 C++
gkwidget.dll!nsWindow::DispatchWindowEvent(nsGUIEvent *, nsEventStatus &) Line 2792 C++
gkwidget.dll!nsWindow::OnPaint(HDC__ *) Line 509 C++
gkwidget.dll!nsWindow::ProcessMessage(unsigned int, unsigned int &, long &, long *) Line 3669 C++
gkwidget.dll!nsWindow::WindowProc(HWND__ *, unsigned int, unsigned int, long) Line 3374 C++
user32.dll!_InternalCallWinProc@20()
user32.dll!_UserCallWinProcCheckWow@32()
user32.dll!_DispatchClientMessage@20()
user32.dll!___fnDWORD@4()
ntdll.dll!_KiUserCallbackDispatcher@12()
user32.dll!_NtUserCallHwndLock@8()
gkwidget.dll!nsWindow::DispatchStarvedPaints(HWND__ *, long) Line 2895 C++
user32.dll!_InternalEnumWindows@24()
user32.dll!_EnumChildWindows@12()
gkwidget.dll!nsWindow::DispatchPendingEvents() Line 2935 C++
gkwidget.dll!nsWindow::ProcessMessage(unsigned int, unsigned int &, long &, long *) Line 3780 C++
gkwidget.dll!nsWindow::WindowProc(HWND__ *, unsigned int, unsigned int, long) Line 3374 C++
user32.dll!_InternalCallWinProc@20()
user32.dll!_UserCallWinProcCheckWow@32()
user32.dll!_DispatchMessageWorker@8()
user32.dll!_DispatchMessageW@4()
gkwidget.dll!nsAppShell::ProcessNextNativeEvent(int) Line 166 C++
gkwidget.dll!nsBaseAppShell::DoProcessNextNativeEvent(int) Line 151 C++
gkwidget.dll!nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal *, int, unsigned int) Line 278 C++
xpcom_core.dll!nsThread::ProcessNextEvent(int, int *) Line 510 C++
xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread *, int) Line 230 C++
gkwidget.dll!nsBaseAppShell::Run() Line 170 C++
tkitcmps.dll!nsAppStartup::Run() Line 182 C++
xul.dll!XRE_main(int, char * *, const nsXREAppData *) Line 3479 C++
firefox.exe!NS_internal_main(int, char * *) Line 156 C++
firefox.exe!wmain(int, unsigned short * *) Line 110 C++
firefox.exe!__tmainCRTStartup() Line 583 C
firefox.exe!wmainCRTStartup() Line 403 C
kernel32.dll!_BaseProcessStart@4()
![]() |
||
Comment 2•16 years ago
|
||
Hmm. I wonder whether we're interrupting inside the table cell or something... Need to think about this.
Reporter | ||
Comment 3•16 years ago
|
||
These come in batches when I switch tabs in Chromebug. Might be the Tracing panel; so it might show up in Firebug's tracing window which would make a much easier repro case. I'll check that next week.
![]() |
||
Comment 4•16 years ago
|
||
Hmm. Are these happening in a _chrome_ document then? In your PresShell::DoReflow, what's the mDocumentURI of the presshell's mDocument?
![]() |
||
Comment 5•16 years ago
|
||
I guess we interrupt chrome documents in any case, so that shouldn't matter. Still need to look at the code per comment 2.
Updated•3 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•